iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 3

DAY 3 「決策樹Decision Tree」對鳶尾花數據進行分類~~

  • 分享至 

  • xImage
  •  

決策樹基於樹狀結構的監督式學習算法用於分類和回歸

  • 節點(Node):
    決策樹的節點分為兩種類型:內部節點和葉節點。
    內部節點代表對數據的一次分割,它包含了一個特徵和一個閾值(例如:花瓣長度小於2.5cm)。
    葉節點代表最終的預測值或分類。
  • 分割規則(Splitting Rule):
    決策樹根據特徵的值來將數據分割成不同的子集。
    分割的目的是使每個子集內的樣本盡可能屬於同一類別(對於分類任務)或具有相似的目標值(對於回歸任務)。
  • 信息增益(Information Gain)或基尼係數(Gini Impurity):
    用於評估哪個特徵在當前節點最能有效地分割數據。
    信息增益量化了分割後熵的減少,而基尼係數度量了分割後的不純度。
  • 樹的建構 (Tree Construction):
    決策樹的建構是一個遞歸的過程。從根節點開始,選擇最佳的分割特徵和閾值,將數據集分割成兩個子集。
    重複此過程,對每個子集選擇最佳的分割,直到達到停止條件(如達到最大深度、節點中的樣本數小於某個閾值等)。
  • 過擬合(Overfitting):
    決策樹容易過擬合訓練數據,這意味著它在訓練數據上表現很好,但在測試數據上表現較差。因此,需要進行剪枝操作來減小樹的複雜度。
  • 預測 (Prediction):
    對於新的數據,通過遵循決策樹上的分支路徑,最終達到一個葉節點,從而得到預測結果。
# 引入必要的庫
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt

# 加載鳶尾花數據集作為範例
iris = load_iris()
X, y = iris.data, iris.target

# 將數據集分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

# 創建決策樹分類器
clf = DecisionTreeClassifier()

# 使用訓練數據來訓練模型
clf.fit(X_train, y_train)

# 使用測試數據來評估模型性能
accuracy = clf.score(X_test, y_test)
print(f"準確率:{accuracy}")

# 繪製決策樹
plt.figure(figsize=(10, 7))
plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()

上一篇
DAY 2 「sklearn」調用演算法10步驟你也是大神~
下一篇
DAY 4 「隨機森林(Random Forest)」sklearn來進行乳腺癌檢測~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言